/**************************************************************************** **
 * Copyright (C) 2001-2022 Inhand Networks, Inc.
 **************************************************************************** **/

/* ************************************************************************** **
 *     MODULE NAME            : system
 *     LANGUAGE               : C
 *     TARGET ENVIRONMENT     : Any
 *     FILE NAME              : arith.c
 *     FIRST CREATION DATE    : 2023/03/26
 * --------------------------------------------------------------------------
 *     Version                : 1.0
 *     Author                 : xuke
 *     Last Change            : 2023/03/26
 *     FILE DESCRIPTION       : <C接口实现>_算数计算
** ************************************************************************** */
#include "arith.h"

int Arith_max(int x, int y) {
	return x > y ? x : y;
}

int Arith_min(int x, int y) {
	return x > y ? y : x;
}

int Arith_div(int x, int y) {
	if ((-13/5 == -2) && ((x < 0) != (y < 0)) && (x%y != 0)) {
		//向右取整 && 异号 && 不能整除
		return x/y - 1;
	} else {
		return x/y;
	}
}

int Arith_mod(int x, int y) {
	if ((-13/5 == -2) && ((x < 0) != (y < 0)) && (x%y != 0)) {
		//向右取整 && 异号 && 不能整除
		return x%y + y;
	} else {
		return x%y;
	}
}

int Arith_floor(int x, int y) {
	return Arith_div(x, y);
}

int Arith_ceiling(int x, int y) {
	return Arith_div(x, y) + (x%y != 0);
}

